#ifndef time_n_date_h
#define time_n_date_h

#include "mesinkata.h"
#include "boolean.h"
#include <time.h>
#include "time_n_date.h"


//Deklarasi tipe bentukan

// tipe bentukan waktu 
/* 	h menyatakan jam , 
	m menyatakan menit , 
	s menyatakan detik */
typedef struct {
	int h,m,s;
} Time;

//tipe bentukan tangal
/*	d menyatakan hari,
	m menyatakan bulan
	y menyatakan tahun */
typedef struct {
	int d,m,y;
} Date;

//--------------
//  PRIMITIF dan PARSING
//--------------

Time ParseTime(string s);
/*Mengkonversi string dengan format hh:mm:ss 
ke tipe bentukan time */

Date ParseDate(string s);
/*Mengkonversi string dengan format dd-mm-yy
ke tipe bentukan date */

string DateToString(Date d);
/*Mengubah tipe bentukan date ke tipe string dengan format dd-mm-yy */

string TimeToString(Time t);
/* Mengubah tipe bentukan Time ke string dengan format hh:mm:ss */


//--------------
//  RELASIONAL

boolean IsDateLt(Date d1 , Date d2);
/*Mengecek apakah tanggal d1 sebelum d2*/

boolean IsDateGt(Date d1 , Date d2);
/*Mengecek apakah tanggal d1 sesudah d2*/

boolean IsDateEq(Date d1 , Date d2);
/*Mengecek apakah tanggal d1 sama dengan d2*/

boolean IsTimeLt(Time t1 , Time t2);
/*Mengecek apakah t1 sebelum t2*/

boolean IsTimeGt(Time t1 , Time t2);
/*Mengecek apakah t1 sesudah t2*/

boolean IsTimeEq(Time t1 , Time t2);
/*Mengecek apakah t1 sama dengan t2 */

//--------------
//  Pengambilan Date & Time dari sistem

Date GetCurrentDate();
/*Mengembalikan tanggal sistem saat fungsi ini dipanggil */

Time GetCurrentTime();
/*Mengembalikan waktu sistem saat fungsi ini dipanggil */


#endif
